// 定义一个quickSort函数，他的参数是一格数组
var quickSort = function(arr) {
    // 然后，检查数组的元素个数，如果小于等于1，就返回。
    if (arr.length <= 1) {return arr}
    // 接着，选择"基准"（pivot），并将其与原数组分离，再定义两个空数组，用来存放一左一右的两个子集。
    let pivotIndex = Math.floor(arr.length / 2);
    let pivot = arr.splice(pivotIndex, 1)[0];
    let left = [], right = []; 
    // 然后，开始遍历数组，小于"基准"的元素放入左边的子集，大于基准的元素放入右边的子集。
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
            left.push(arr[i])
        } else {
            right.push(arr[i])
        }
    }
    // ES6 遍历数组
    // arr.forEach(ele => {
    //     el >= pivot ? right.push(el) : left.push(el)
    // }); 

    // 最后，使用递归不断重复这个过程，就可以得到排序后的数组。
    return quickSort(left).concat([pivot], quickSort(right));
}

var a = [4,0,1,3,2,6,17,419,22,46];
console.log(quickSort(a));